package com.atguigu.gmall.cart.controller;

import com.atguigu.gmall.cart.entity.CartInfo;
import com.atguigu.gmall.cart.service.CartService;
import com.atguigu.gmall.common.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
// TODO 设置过期时间和商品数量的限制
// TODO 价格同步
//1 购物车确实缓存最新价格，进行同步
//2 购物车展示列表的时候 还要查询一次价格
@RequestMapping("/api/cart")
@RestController
public class CartListController {
    @Autowired
    private CartService cartService;
    /**
     * 获取商品详情列表
     * @return
     */
   @GetMapping("/cartList")
    public Result getCartList(){
       //TODO 合并购物车不能在一登陆后就立马合并，会造成用户一登陆要等待很长时间
       //TODO 要在点击购物车的时候 ，在进行合并
     List<CartInfo>  cartInfos = cartService.displayItems();
         //操作的是哪一个购物车
//       String cartKey = cartService.determinCartKey();
//      List<CartInfo> cartInfoList= cartService.getCartItems(cartKey);
       return  Result.ok(cartInfos);
    }

    /**
     * 修改购物车商品数量
     * @return
     */
    @PostMapping("/addToCart/{skuId}/{skuNum}")
    public Result UpdateNumList(@PathVariable("skuId") Long skuId,
                              @PathVariable("skuNum") Integer skuNum){
        String cartKey = cartService.determinCartKey();
        cartService.updateItemNum(cartKey,skuId,skuNum);
        return  Result.ok();
    }
   @GetMapping("checkCart/{skuId}/{checked}")
    public Result updateChecked(@PathVariable("skuId") Long skuId,
                                @PathVariable("checked") Integer checked) {
       String cartKey = cartService.determinCartKey();
       cartService.updateChecked(cartKey,skuId,checked);
       return  Result.ok();
    }

    /**
     * 删除商品
     * @param skuId
     * @return
     */
    @DeleteMapping("/deleteCart/{skuId}")
    public Result deleteCart(@PathVariable("skuId") Long skuId){
        String cartKey = cartService.determinCartKey();
        cartService.deleteCart(cartKey,skuId);
        return   Result.ok();
    }

}
